Personal computer systems are well known in the art. Personal computer systems have attained wide-spread use for providing computer power to many segments of today's modern society. Personal computers can typically be defined as a desktop, floor standing, or portable, and comprised of a system unit having a single central processing unit (CPU) and associated volatile and non-volatile memory, including all RAM and BIOS ROM, a system monitor, a keyboard, one or more flexible diskette drives, a fixed disk storage drive (also known as a "hard drive"), a so-called "mouse" pointing device, CD-ROM drive and, optionally, a fax/modem and printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small businesses. Examples of such personal computer systems are IBM's PERSONAL COMPUTER AT (IBM PC/AT) and later, more advanced, descendants made by DELL, COMPAQ and others. These computer systems are collectively referred to as PC's.
Personal computer systems are typically used to run software to perform such diverse activities as word processing, manipulation of data via spread-sheets, collection and relation of data in databases, displays of graphics, design of electrical or mechanical systems using system-design software, etc. The proliferation of the Internet, and other on-line communication services, has placed additional demands on personal computer systems and the networks with which they communicate.
A personal computer system user typically accesses the Internet, or other on-line network provider, through a fax/modem device that connects the user's personal computer system to the on-line network's host network. The fax/modem device is generally connected to a regular telephone line, also know as Plain-Old-Telephone-Service (POTS), and dials a telephone number which is associated with an on-line provider or, if sending a facsimile, a fax machine or another computer system with a fax/modem. Because POTS lines are analog in nature, they have limited bandwidth. The term "bandwidth" is Generally used to describe the frequency range of transmission and/or reception of a device and when used in connection with communication devices such as fax/modems, is typically measured in terms of baud rates. A "baud" is measured as one bit per second. (hereinafter bps). POTS lines generally have an upper transmission limit of 33.6 kbps (kilobits per second). As an alternative to the POTS line, most telephone companies offer an Integrated Digital Services Network (ISDN) line. Because ISDN lines are "digital" in nature, their transmission rates are significantly greater than a POTS line. A typical ISDN line offers transmission rates of 128 kbps for data and 16 kbps for signaling and control.
Once a user is connected to an on-line provider, the user may perform a variety of functions, such as, browsing homepages, uploading and downloading files from remote network sites. Additionally, when users are not using their personal computer system's to connect to these on-line services, they are increasingly using their systems to send and receive facsimiles through the fax/modem device. However, functions such as these tend to create what is known as a communication "bottleneck" il a user's personal computer system. A communication "bottleneck" is created because the user is prohibited from using the system or executing other functions when the system is performing certain operations. One typical example of this communication "bottleneck" is WINDOWS 3.1's and WINDOWS '95's use of an "hourglass" pointer icon to indicate to the user that the system is busy and cannot be directly controlled by the user. In such a case, the user must wait until the system completes its task and returns control to the user by changing the "hourglass" icon back to an "arrow" icon. The above described phenomena is further described as "lost use" of the personal computer system since the user cannot use the system during this period.
A second, associated problem with communication "bottleneck," is known as "FAX-failure." "FAX-failure" occurs when a personal computer system is busy for long periods of time and fails to communicate with a second device to which communication was originally established. The failure of communication causes the second device to assume that the personal computer system has failed or ended the communication and therefore the second device will also end the communication. One example of "FAX-failure" is when, in an intranet or LAN communications network, large raster image information or files (megabytes in size) are required to be sent to a local plotter or printer. In such a situation, the computer system may be occupied for over an hour in the generation of the required raster file information and therefore not communicate with the printer or plotter device during this period. This non-communication will cause the network to assume that the connection between the computer system and the plotter or printer has failed due the absence of control or data transmission in the connection and the connection will be lost.
To further understand how the phenomena's of communication "bottleneck" and "FAX-failure" arise, a review of how a computer system communicates with its peripheral devices, such as a fax/modem, is useful. There are two general methods by which a computer system collects information from its peripheral devices: (1) Polling and (2) Hardware Interrupts. In Polling, the peripheral device is regularly examined to determine whether information is available for the central processing unit to process. The primary disadvantage of this method is that the central processing unit is pre-occupied with the polling process which causes the execution of foreground programs to proceed slowly. Additionally, polling routines must be incorporated into the program running and thus requires more code. Moreover, if the polling period is too long, information at the peripheral device may be lost due to replacement by more recent information.
The second method by which a computer system collects information from its peripheral devices is via the use of hardware interrupts. This method is more properly known as Interrupt-Driven Data Exchange (IDDE). In IDDE, the peripheral device causes an interrupt, or IRQ, signal to be generated that informs the central processor that information has been received from the peripheral device and is ready for processing. As compared to Polling, IDDE does not require periodic examination of the peripheral device. Accordingly, the foreground program(s) will execute with greater performance because the central processing unit is not occupied with polling of the peripheral device. However, the full potential of IDDE has yet to be fully realized.
Additionally, during these and other "bottleneck" conditions, users experience a wide range of computer system performance problems from "herky-jerky" foreground performance to data overruns to "network busy" disconnections. Typically, the "herky-jerky" performance occurs when there is a background upload and download file transfer activity. The "bottleneck" causing data overrun occurs in the computer system because the system's software is not retrieving data from its modem device at a speed (i.e. baud rate) that is equal to the speed at which the modem device is receiving the transmitted data from the transmitting or sending device.
Most modem devices are equipped to handle the storage of a limited amount of data in its own buffer. However, when the modem device's buffer is filled to capacity and the computer system's UART (Universal Asynchronous Receiver Transmitter) buffer has not been emptied while additional data is received from the transmitting modem device a condition called data "overrun" occurs. When data "overrun" occurs, the receiving) modem device must notify the transmitting modem device to retransmit the already transmitted data when it has available buffer space. Therefore, this condition results in the transmission of certain data more than once.
A "network busy" problem occurs because the flow of data through the network is not monitored in a dynamic fashion. In particular, some networks do not distinguish nodes requiring service from nodes not requiring service. Therefore, conditions may occur wherein the network is not servicing those nodes which require service because the network has allocated resources to nodes which do not require service.
Accordingly, the present invention is directed to reducing the communications "bottleneck" and the associated problem of "FAX-failure." By reducing the communications "bottleneck" and the associated problem of "FAX-failure," users can regain "lost use" of their personal computer systems which occurs, for example, during file transfers and other situations, discussed supra. Moreover, by reducing the communications "bottleneck" and "FAX-failure," a user can more efficiently employ a POTS line because the user's personal computer system will run closer to its designed hardware limits.